import { testSort,swap,measureSort } from "hy-algokit";
// 在冒泡排序中，每次比较两个相邻的元素，并交换他们的位置，如果左边的元素比右边的元素大，则交换他们的位置，这样的比较和交换的过程可以用一个循环实现
// import { swap, testSort} from "./utils";
// 两两比较，两两交换

export default function bubbleSort(arr:number[]):number[]{
    const n = arr.length;
    // 外层for循环 0 - n-1
    for(let i = 0; i < n; i++) {
    // 这里是n - 1的原因是因为如果为n,则下面的j++就会为arr[n],则会取不到值
        for(let j = 0; j < n - 1 - i; j++){
            if(arr[j] > arr[j+1]){
                swap(arr, j, j+1);
            }
        }
    }
    return arr;
}

// let arr = [111, 12, 143, 4, 5];
// const newArr = bubbleSort(arr);
// console.log(newArr);

testSort(bubbleSort);
measureSort(bubbleSort, 100000)
